home *** CD-ROM | disk | FTP | other *** search
- {
- >If anyone could tell me how to disable [Print Screen] from within a
- >text-based program, I would appreciate it. Thanks, - Jeff Napier, Another
- >Company -
-
- For that you can trap int 5h(Print Screen interrupt) Here is a program I
- wrote for someone on another network that will show you the basics of how
- it can be done:
-
- nstn1410@fox.nstn.ca
- }
- PROGRAM DisableInt05h; { Dec 13/93, Greg Estabrooks. }
- USES CRT, { IMPORT Clrscr,KeyPressed. }
- DOS; { IMPORT SetIntVec,GetIntVec. }
- VAR
- OldInt05 :POINTER; { Holds the old address of INT 05h. }
- NumPressed :WORD; { The number of times PrtScr was pressed.}
- Misc :WORD;
-
- {$F+} { Force FAR calls. }
- PROCEDURE NewInt05; ASSEMBLER;
- ASM
- Push DS { Push DS onto stack. }
- Mov AX,Seg @Data { Now point DS to our data segment. }
- Mov DS,AX
- Add NumPressed,1 { Add one to counter. }
- Pop DS { Pop DS off stack. }
- IRet { Force a return and pop flags off stack.}
- END;{NewInt05}
- {$F-} { Back to normal. }
-
- BEGIN
- NumPressed := 0; { Clear number count. }
- Clrscr; { Clear the screen. }
- GetIntVec($05,OldInt05); { Save Old Interrupt vector. }
- SetIntVec($05,@NewInt05); { Point to our trap. }
- Misc := 0; { Clear Counter. }
- REPEAT { Loop Until a key other than PrtScr is }
- { pressed. }
- GOTOXY(1,1); { Always show info at top corner. }
- Write(Misc:8,'... You have pressed PrtScr ',NumPressed:3,' times.');
- INC(Misc); { Increase counter to show a change. }
- UNTIL KeyPressed;
- SetIntVec($05,OldInt05); { Restore Old Interrupt vector. }
- END.{DisableInt05h}